const Koa=require("koa");
const cors=require("koa-cors");
const bodyparser=require("koa-bodyparser");
const router=require("koa-router")();


//引用工具
const {Sequelize, DataTypes, Op}=require("sequelize");


//实力化一个数据库模型
let Blogs=new Sequelize("blog","postgres","qwertyuiop12",{
    host:"qiuqiu.link",
    dialect:"postgres",
    
})


//创建表结构
let blog=Blogs.define('blog',{
    Title:{
        type:DataTypes.STRING,
        allowNull:false
    },
    Digest:{
        type:DataTypes.STRING,
        allowNull:false
    },
    Content:{
        type:DataTypes.STRING,
        allowNull:false
    },
    Classify:{
        type:DataTypes.STRING,
        allowNull:false
    },
    Author:{
        type:DataTypes.STRING,
        allowNull:false
    },
    Time:{
        type:DataTypes.STRING,
        allowNull:false
    }
})
console.log(111);



// 同步数据库表，为表批量插入数据
Blogs.sync({force:true}).then(()=>{

    blog.bulkCreate([
        {
            Title:"论EF Core的自我休养",
            Digest:"论EF Core的自我休养",
            Content:"论EF Core的自我休养",
            Classify:".NET",
            Author:"InCerry",
            Time:"2022-04-06 08:47"
        },
        {
            Title:"DDD之我见",
            Digest:"DDD之我见",
            Content:"DDD之我见",
            Classify:"编程技术",
            Author:"某大神",
            Time:"2022-04-06 08:47"
        },
        {
            Title:"nginx负载平衡的几种策略",
            Digest:"nginx负载平衡的几种策略",
            Content:"nginx负载平衡的几种策略",
            Classify:"服务器",
            Author:"老胡来也",
            Time:"2022-04-06 08:47"
        },
        {
            Title:"Linux用户创建的学习研究",
            Digest:"Linux用户创建的学习研究",
            Content:"Linux用户创建的学习研究",
            Classify:"Linux",
            Author:"某大神",
            Time:"2022-04-06 08:47"
        },
        {
            Title:"大数据仪表盘",
            Digest:"大数据仪表盘",
            Content:"大数据仪表盘",
            Classify:"大数据",
            Author:"居家博士",
            Time:"2022-04-18 16:18"
        }
    ])
})


let app=new Koa();

app.use(cors());
app.use(bodyparser());
app.use(router.routes());


app.listen(8080);




//路由处理函数

router.get('/blog',async(ctx,next)=>{
    let keyword=ctx.request.query.keyword
    console.log(keyword);
    console.log(111);

    if (keyword !='') {
        let list=await blog.findAll({
            where:{
                [Op.or]:[
                    {id:isNaN(keyword)? -1:keyword},
                    {Title:keyword},
                    {Digest:keyword},
                    {Content:keyword},
                    {Classify:keyword},
                    {Author:keyword},
                    {Time:keyword},
                ]
            },
            order:["id"]
        })
    
        if (list.length>0) {
            ctx.body={
                code:1000,
                data:list,
                mgs:"根据关键字查找成功"
            }
            
        } else {
            ctx.body={
                code:1000,
                data:list,
                mgs:"根据关键字查找成功"
            }
            
        }
        
    } else {
        let List=await blog.findAll({
            order:['id']
        })

        if (List.length>0) {
            ctx.body={
                code:1000,
                data:List,
                mgs:"全部数据返回成功"
            }
            
        } else {
            ctx.body={
                code:400,
                data:null,
                mgs:"数据库没有一点数据"
            }
            
        }
        
    }
    
})


router.delete("/blog/:id",async(ctx,next)=>{
    let id=ctx.request.params.id
    console.log(id);

    let isDel=await blog.destroy({
        where:{
            id
        }
    })

    if (isDel) {

        let List=await blog.findAll({
            order:['id']
        })

        if (List.length>0) {
            ctx.body={
                code:1000,
                data:List,
                mgs:"数据删除成功，并返回全部数据返回成功"
            }
            
        } else {
            ctx.body={
                code:400,
                data:null,
                mgs:"数据库没有一点数据"
            }
            
        }
        
    } else {

        let List=await blog.findAll({
            order:['id']
        })

        if (List.length>0) {
            ctx.body={
                code:1000,
                data:List,
                mgs:"数据删除失败，并返回全部数据返回成功"
            }
            
        } else {
            ctx.body={
                code:400,
                data:null,
                mgs:"数据库没有一点数据"
            }
            
        }
        
    }


})